package libra;

import java.util.stream.Stream;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.endpoint.event.RefreshEvent;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.event.EventListener;

@SpringBootApplication
public class MainEntry {
	/**
	 * 监听Config刷新Event的Listener
	 */
	@EventListener
	public void onApplicationEvent(RefreshEvent event) {
		System.out.println("捕获到RefreshEvent...");
	}
	
	public static void main(String[] args) throws Exception {
		/*
		 * 启动Spring应用，返回一个ConfigurableApplicationContext的context对象，可以像原来一样从里面通过getbean等方法，获取对象
		 * run()传入的类，一定要是个用@SpringBootApplication注解标注的类，被@SpringBootApplication标注的类被解释为SpringBoot的主配置类。
		 * 当程序执行时，就应该运行该类的main方法来启动SpringBoot应用。
		 */
		ConfigurableApplicationContext cac = org.springframework.boot.SpringApplication.run(MainEntry.class, args);
		
		Stream.of( cac.getBeanDefinitionNames() )
			.forEach( beanName -> {
				System.out.println(beanName);
			} 
		);
		
//		com.alibaba.cloud.nacos.NacosConfigAutoConfiguration
	}
}
